/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.tdc.visitor.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.thinkgem.jeesite.common.persistence.CrudDao;
import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
import com.thinkgem.jeesite.modules.tdc.department.entity.TdcDepartment;
import com.thinkgem.jeesite.modules.tdc.times.entity.TdcTimes;
import com.thinkgem.jeesite.modules.tdc.visitor.entity.TdcVisitorReservation;
import com.thinkgem.jeesite.modules.tdc.visitor.entity.TdcVisitorReservationJson;

/**
 * 前台首页-预约DAO接口
 * @author 曹红
 * @version 2017-03-21
 */
@MyBatisDao
public interface TdcVisitorReservationDao extends CrudDao<TdcVisitorReservation> {
	
	/**
	 * 获得部门信息
	 * @return 部门信息的集合
	 */
	List<TdcDepartment> getDepts();
	
	/**
	 * 根据星期获取对应的星期对象
	 * @param sweek 星期
	 * @return 星期对象
	 */
	TdcTimes getWeek(String sweek);
	
	/**
	 * 获得预约时间信息
	 * @return 包含预约时间信息的集合
	 */
	List<TdcTimes>getTimes();
	
	/**
	 * 查询指定类型（提审 或 会见）的房间数
	 * @param bespeakType 预约类型
	 * @return 指定类型（提审 或 会见）的房间数
	 */
	int typeRooms(String bespeakType);
	
	/**
	 * 查询指定预约时间段、指定预约类型 的预约人数
	 * @param bespeakStart
	 * @param bespeakEnd
	 * @param bespeakType 预约类型
	 * @return 指定预约时间段的预约人数
	 */
	int startEndNum(@Param("bespeakStart")String bespeakStart,@Param("bespeakEnd")String bespeakEnd,@Param("bespeakType")String bespeakType);
	
	/**
	 * 
	 * todayCount:(当天预约总量)
	 * @return 当天预约总量
	 */
	public int todayCount();
	
	/**
	 * 
	 * arrivedCount:(当天已到数量)
	 * @return 当天已到数量
	 */
	public int arrivedCount();
	
	/**
	 * 根据 预约编号查询相关的预约信息
	 * @param bespeakNumber 预约编号
	 * @return 返回相关的预约信息对象
	 */
	TdcVisitorReservationJson getByBespeakNumber(String bespeakNumber);
	
	/**
	 * 获取当前预约信息表里的最大的预约编号
	 * @return 当前数据库中的最大的预约编号
	 */
	String getMaxBespeakNumber();
}